package com.agile.springboot.controller;

import com.agile.springboot.common.Result;
import com.agile.springboot.entity.User;
import com.agile.springboot.service.LoginService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/login")
public class LoginController {

    @Resource
    LoginService loginService;

    /**
     * 账号密码登录
     * @param user 用户实体
     * 所必须的参数为 username 用户名属性、 password 密码属性
     * @return 用户的身份信息
     */
    @RequestMapping("/account")
    public Result<?> login(@RequestBody User user) {
        List<User> userList = loginService.loginUser(user);
        if (userList.isEmpty()) {
            return Result.error("", "账号密码错误！");
        }
        User user1 = userList.get(0);
        switch (user1.getIdentity()) {
            case 0:
                return Result.success(0, "管理员");
            case 1:
                return Result.success(1, "租户");
            case 2:
                return Result.success(2, "用户");
            case 3:
                return Result.success(3, "答者");
        }
        return Result.error("", "没找到该登录者相关信息!");
    }

    /**
     * 检测当前手机号是否已经注册过
     * @param user 用户实体
     * 所必须的参数为 phone 用户手机号属性
     * @return 结果相关信息
     */
    @RequestMapping("/check")
    public Result<?> check(@RequestBody User user) {
        List<User> userList = loginService.phoneUser(user);
        if (userList.isEmpty()) {
            return Result.error("-1", "该用户手机号还未注册！");
        }
        return Result.success(1, "核验成功！");
    }

    /**
     * 用户输入验证码正确后辨别用户身份
     * @param user 用户实体
     * 所必须的参数为 phone 用户手机号属性
     * @return 用户的身份信息
     */
    @RequestMapping("/checklogin")
    public Result<?> checkLogin(@RequestBody User user) {
        List<User> userList = loginService.phoneUser(user);
        User user1 = userList.get(0);
        switch (user1.getIdentity()) {
            case 0:
                return Result.success(0, "管理员");
            case 1:
                return Result.success(1, "租户");
            case 2:
                return Result.success(2, "用户");
        }
        return Result.error("-1", "没找到该用户相关信息！");
    }

    /**
     * 判断所输入的用户名和手机号是否允许注册
     * @param user 用户实体
     * 所必须的参数为 username 用户名属性、 phone 用户手机号属性
     * @return 结果相关信息
     */
    @RequestMapping("/register")
    public Result<?> register(@RequestBody User user) {

        List<User> userList1 = loginService.searchUserByUsername(user);
        if (!userList1.isEmpty()) return Result.error("-1", "该用户名已存在！");

        List<User> userList = loginService.phoneUser(user);
        if (!userList.isEmpty()) return Result.error("-2", "该电话号码已被使用!");

        return Result.success(1, "允许注册!");
    }
}
